conn.getMetaData()获取列名重复问题解决

步骤

1
2
3
4
5
6
7
8
9
10
11
12
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@<server>:1521:<sid>", <username>, <password>);

DatabaseMetaData meta = conn.getMetaData();
ResultSet columns = meta.getColumns(null, null, "EMPLOYEES", null);
int i = 1;
while (columns.next())
{
System.out.printf("%d: %s (%d)\n", i++, columns.getString("COLUMN_NAME"),
columns.getInt("ORDINAL_POSITION"));
}
1
2
3
4
5
6
7
8
ResultSet中包含着一套复制所有的列,即每列返回两次。 下面是我得到的输出:

1: ID (1)
2: NAME (2)
3: CITY (3)
4: ID (1)
5: NAME (2)
6: CITY (3)

解决办法,用数组判断列名,防止重复列

1
2
3
4
5
6
7
8
9
10
11
//这里是为了防止获取重复的列;
List<String> fieldList = new ArrayList<>();
if(fieldList.size()>0){
for (String field:fieldList){
String COLUM = resultSet.getString("COLUMN_NAME");
String colum = StringUtils.underScoreCase2CamelCase((COLUM.toLowerCase()));
if(colum.equals(field)){
return;
}
}
}
继开 wechat
欢迎加我的微信,共同交流技术